﻿using OrderStateMachineWebApi.Models;

namespace OrderStateMachineWebApi.Services
{
    public interface IOrderStateMachineService
    {
        Task<Order> CreateOrderAsync(decimal amount);
        Task<Order> GetOrderByIdAsync(Guid id);
        Task<Order> PayOrderAsync(Guid orderId);
        Task<Order> ProcessOrderAsync(Guid orderId);
        Task<Order> ShipOrderAsync(Guid orderId);
        Task<Order> CompleteOrderAsync(Guid orderId);
        Task<Order> CancelOrderAsync(Guid orderId);
        Task<Order> StartRefundOrderAsync(Guid orderId);
        Task<Order> CompleteRefundOrderAsync(Guid orderId);
    }

}
